import {
	mapMutations,
	mapState
} from 'vuex'

export default {
	name: "my-login",
	data() {
		return {

		};
	},
	methods: {
		...mapMutations('m_user', ['updateUserInfo', 'updateToken', 'updateRedirectInfo']),

		// 获取微信用户的基本信息
		getUserProfile() {
			uni.getUserProfile({
				desc: ' 完善用户资料',
				success: (res) => {
					this.updateUserInfo(res.userInfo)
					this.getToken(res)
				},
				fail: () => {
					uni.$showMsg('您取消了授权')
				}
			})
		},

		// 调用登录接口，换取永久的 token
		async getToken(info) {
			// 调用微信登录接口
			const [err, res] = await uni.login().catch(err => err);
			// 判断是否调用失败
			if (err || res.errMsg !== 'login:ok') return uni.$showMsg('登录失败！');
			// 准备参数对象
			const query = {
				code: res.code,
				encryptedData: info.encryptedData,
				iv: info.iv,
				rawData: info.rawData,
				signature: info.signature
			};

			// 自定义假的 token
			this.updateToken(
				"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjIzLCJpYXQiOjE1NjQ3MzAwNzksImV4cCI6MTAwMTU2NDczMDA3OH0.YPt-XeLnjV-_1ITaXGY2FhxmCe4NvXuRnRB8OMCfnPo"
			);

			// 换取 token 因为接口权限问题不能获取到 token，只能使用假的 token
			// const {
			// 	data: loginResult
			// } = await uni.$http.post('/api/public/v1/users/wxlogin', query);

			// 判断 vuex 中的 redirectInfo 是否为 null
			// 如果不为 null，则登录成功之后，需要重新导航到对应的页面
			this.navigateBack()
		},

		// 返回登录之前的页面
		navigateBack() {
			// redirectInfo 不为 null，并且导航方式为 switchTab
			if (this.redirectInfo && this.redirectInfo.openType === 'switchTab') {
				// 调用小程序提供的 uni.switchTab() API 进行页面的导航
				uni.switchTab({
					// 要导航到的页面地址
					url: this.redirectInfo.from,
					// 导航成功之后，把 vuex 中的 redirectInfo 对象重置为 null
					complete: () => {
						this.updateRedirectInfo(null)
					}
				})
			}
		}
	},

	computed: {
		...mapState('m_user', ['redirectInfo']),
	}
}
